package com;

import java.lang.reflect.Constructor;
import java.lang.reflect.Field;

public class ReflectDemo3 {//定义一个反射测试类

    public static void main(String[] args) throws Exception {//main方法入口并跑出异常
        Class<?> c = Class.forName("com.Student");//获取类的对象通过Claaforname方法
        Constructor<?> cos = c.getConstructor();//获取无参数构造方法
        Object o = cos.newInstance();//通过newinstance方法获取类的对象
        Field name = c.getDeclaredField("name");//获取类的私有成员变量
        name.setAccessible(true);//暴力反射取消私有权限修饰的访问权限
        Object o1 = name.get(o);
        System.out.println(o1);
        name.set(o, "诸葛亮");//通过set方法进行赋值
        System.out.println(o);//输出赋值后的对象
        Constructor<?> cos1 = c.getConstructor(String.class, int.class, int.class);
        //通过类的class文件对象的有参数构造方法创建有参数构造方法对象
        Object object = cos1.newInstance("曹操", 45, 100);
        //再通过有参数构造方法对象的newInstance方法创建实例对象
        System.out.println(object);//输出对象
    }
}
